#include <stdio.h>
#include <errno.h>
#include <windows.h>
#include <io.h>
#include "nonposix.h"

/* Rename the file OLD to NEW.  */
#ifdef rename
#undef rename
#endif

//Already reclared in stdio.h
// int unlink (const char* filename)
// {
// 	if (_access (filename, W_OK) < 0) 
// 		switch (errno) {
// 			case EINVAL:
// 				return -1;
// 				break;
// 			case ENOENT:
// 				return -1;
// 				break;
// 			case EACCES:
// 				_chmod (filename, _S_IREAD | _S_IWRITE);
// 				break;
// 			default:
// 				break;
// 		}
// 	return _unlink (filename);
// }

int w32_rename (const char* _old, const char* _new)
{
	if (_old == NULL || _new == NULL) {
		errno = EINVAL;
		return -1;
	}

	if (!_access (_new, /*F_OK*/0))
		unlink (_new);
	return rename (_old, _new);
}
